DAS десятичная коррекция при вычитании

Флаги

O D I T S Z A P C
?       * * * * *

Команда:

DAS

Логика:

if (AL & 0Fh) > 9 or (AF = 1) then
                         AL = AL - 6
                         AF = 1
                     else  AF = 0
                     if (AL > 9Fh) or (CF = 1) then
                         AL = AL - 60h
                         CF = 1
                     else  CF = 0 


Команда DAS корректирует результат предшествующего ей вычитания двух упакованных десятичных операндов (заметьте, что результат должен находиться в AL). Эта команда изменяет содержимое AL так, чтобы AL содержал пару упакованных десятичных цифр.

Операнды Такт байты (слова)ОбращенияБайтыПример
нет операндов4 - 1DAS

Примечания:
В упакованном двоично-десятичном коде каждому полубайту соответствует одна цифра; менее значащую цифру содержит младший полубайт. После деления или умножения чисел, записанных в упакованном двоично-десятичном коде, производить коррекцию нельзя. Поэтому, если Вы хотите воспользоваться операцией деления или умножения, то лучше использовать числа в неупакованном двоично-десятичном коде. См., например, описание команды AAM (ASCII-коррекция при умножении).

Hosted by uCoz